Skip to content

Conversation

@buhtz
Copy link
Member

@buhtz buhtz commented Jan 6, 2026

Symbolic icons now explicit used as fallback for icons in toolbar and elsewhere.

This is a workaround because Qt itself does ignore the concept of symbolic icons and does not check them by itself. This affects GNOME (Debian 13) users for example because it's adwaita icon theme is shipped with symbolic icons only.

Fix #2289

@buhtz buhtz added this to the 1.6.0 (upcoming next) milestone Jan 6, 2026
@buhtz buhtz added Qt Qt bugs, code or features PR: Waiting for review PR won't be merged until review and approval from a member of the maintenance team. PR: Merge after creative-break Merge after creative-break (min. 1 week) labels Jan 6, 2026
@buhtz
Copy link
Member Author

buhtz commented Jan 8, 2026

TODO: Add comment about this discussion and that this solution is a workaround and should be reverted if GNOME and/or Debian offer a long term solution.

@buhtz buhtz merged commit 9cdbaa5 into bit-team:dev Jan 8, 2026
1 check passed
@buhtz buhtz deleted the fix/2289missingicons branch January 8, 2026 16:48
@gamerdad84
Copy link

Hi. I just wanted to comment that I tested this new icon.py file on a fresh Debian 13 VM with Back in Time 1.5.5 installed.

I found it does indeed fix the icons when running back in time as standard user. The symbolic icons now appear. However I found that when running as root (backintime-qt_polkit) the icons still don't show, get the error about no theme found in --debug output.

What I found does fix this, is editing the icon.py file and adding 'Adwaita' (with a capital A) to the list of themes to search for. Example below:

themes_to_try = (
'ubuntu-mono-dark',
'gnome',
'breeze',
'breeze dark',
'hicolor',
'adwaita',
'adwaita-dark',
'yaru',
'oxygen',
'Adwaita',
)

Appears that when running as root via polkit the theme directories in /usr/share/icons are case sensitive. When running as standard user they are not. On Debian 13, in /usr/share/icons directory, Adwaita is spelt with captial A as below:

user@debian:/usr/share/icons$ ls -alh
total 64K
drwxr-xr-x 8 root root 4.0K Jan 10 04:34 .
drwxr-xr-x 228 root root 12K Jan 10 04:39 ..
drwxr-xr-x 6 root root 4.0K Jan 10 04:36 Adwaita
drwxr-xr-x 2 root root 4.0K Jan 10 04:36 default
drwxr-xr-x 6 root root 4.0K Jan 10 04:33 desktop-base
-rw-r--r-- 1 root root 7.9K Aug 3 04:17 gnome-logo-text-dark.svg
-rw-r--r-- 1 root root 7.8K Aug 3 04:17 gnome-logo-text.svg
drwxr-xr-x 30 root root 4.0K Jan 10 04:39 hicolor
drwxr-xr-x 4 root root 4.0K Jan 10 04:30 locolor
drwxr-xr-x 6 root root 4.0K Jan 10 04:33 vendor
-rw-r--r-- 1 root root 6.2K Jan 9 2024 zbar.ico

Here is a before and after debug log running backintime-qt_polkit --debug:

Before adding 'Adwaita' to list of themes to lookup:

backintime-qt_polkit --debug
DEBUG: [common/backintime.py:668 argParse] Argument(s) used: {'debug': True, 'quiet': False}
DEBUG: [common/backintime.py:565 startApp] backintime: {'name': 'Back In Time', 'version': '1.5.5', 'running-as-root': True}; host-setup: {'OS': {'/etc/os-release': 'Debian GNU/Linux 13 (trixie)', '/etc/debian_version': '13.2\n'}}

Back In Time
Version: 1.5.5

Back In Time comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type `backintime --license' for details.

DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
DEBUG: [common/backintime.py:754 getConfig] config file: "/root/.config/backintime/config"; share path: "/root/.local/share/backintime"; profiles: "1=Main profile"
DEBUG: [common/pluginmanager.py:233 PluginManager.load] Register plugin path /usr/share/backintime/plugins
DEBUG: [common/pluginmanager.py:254 PluginManager.load] Add plugin notifyplugin.py
DEBUG: [common/tools.py:1116 is_Qt_working] Qt probing result: exit code 1
DEBUG: [common/tools.py:1120 is_Qt_working] Qt probing stdout:

DEBUG: [common/tools.py:1121 is_Qt_working] Qt probing errout:
DEBUG: [common/qt_probing.py:96 ] /usr/share/backintime/common/qt_probing.py started... Call args: ['/usr/share/backintime/common/qt_probing.py', '--debug']
DEBUG: [common/qt_probing.py:97 ] Display system: ($XDG_SESSION_TYPE is not set)
DEBUG: [common/qt_probing.py:98 ] XDG_RUNTIME_DIR=($XDG_RUNTIME_DIR is not set)
DEBUG: [common/qt_probing.py:99 ] XAUTHORITY=/run/user/1000/.mutter-Xwaylandauth.7370I3
DEBUG: [common/qt_probing.py:100 ] QT_QPA_PLATFORM=($QT_QPA_PLATFORM is not set)
DEBUG: [common/qt_probing.py:102 ] Current euid: 0
DEBUG: [common/qt_probing.py:134 ] isSystemTrayAvailable for Qt: False
DEBUG: [common/qt_probing.py:139 ] /usr/share/backintime/common/qt_probing.py is terminating normally (exit code: 1)

DEBUG: [plugins/systrayiconplugin.py:68 init] No system tray available to show the BiT system tray icon
DEBUG: [qt/qttools.py:355 createQApplication] QT QPA platform plugin: xcb
DEBUG: [qt/qttools.py:356 createQApplication] QT_QPA_PLATFORMTHEME=
DEBUG: [qt/qttools.py:361 createQApplication] QT_STYLE_OVERRIDE=
DEBUG: [qt/qttools.py:364 createQApplication] QT active style: fusion
DEBUG: [qt/qttools.py:365 createQApplication] QT fallback style: hicolor
DEBUG: [qt/qttools.py:366 createQApplication] QT supported styles: ['Windows', 'Fusion']
DEBUG: [qt/qttools.py:367 createQApplication] themeSearchPaths: ['/usr/share/icons', ':/icons']
DEBUG: [qt/qttools.py:368 createQApplication] fallbackSearchPaths: ['/usr/share/pixmaps']
DEBUG: [qt/qttools.py:373 createQApplication] Is SystemTray available: False
DEBUG: [qt/qttools.py:391 createQApplication] Trying to set App ID for root user
DEBUG: [qt/qttools.py:436 initiate_translator] No language code. Use systems current locale.
DEBUG: [qt/statedata.py:145 file_path] State file path: /root/.local/state/backintime-qt.json
DEBUG: [qt/icon.py:50 ] Probing theme: "ubuntu-mono-dark" (activated as "ubuntu-mono-dark")
DEBUG: [qt/icon.py:50 ] Probing theme: "gnome" (activated as "gnome")
DEBUG: [qt/icon.py:50 ] Probing theme: "breeze" (activated as "breeze")
DEBUG: [qt/icon.py:50 ] Probing theme: "breeze dark" (activated as "breeze dark")
DEBUG: [qt/icon.py:50 ] Probing theme: "hicolor" (activated as "hicolor")
DEBUG: [qt/icon.py:50 ] Probing theme: "adwaita" (activated as "adwaita")
DEBUG: [qt/icon.py:50 ] Probing theme: "adwaita-dark" (activated as "adwaita-dark")
DEBUG: [qt/icon.py:50 ] Probing theme: "yaru" (activated as "yaru")
DEBUG: [qt/icon.py:50 ] Probing theme: "oxygen" (activated as "oxygen")
ERROR: [qt/icon.py:56 ] Icon theme missing or not supported. Icon "document-save" and "document-save-symbolic" not found. An icon theme should be installed. For example: tango-icon-theme, oxygen-icon-theme
DEBUG: [common/tools.py:1512 keyringSupported] No keyring due to import error.
DEBUG: [common/mount.py:151 Mount.init] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.init] Call command: ['/usr/bin/backintime', 'pw-cache', 'start']
DEBUG: [common/config.py:1514 Config._cron_line] Profile: Main profile | Automatic backup: 0
DEBUG: [common/tools.py:1512 keyringSupported] No keyring due to import error.
DEBUG: [common/mount.py:151 Mount.init] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.init] Call command: ['/usr/bin/backintime', 'pw-cache', 'start']
DEBUG: [qt/statedata.py:174 save] Save state data.
DEBUG: [qt/statedata.py:145 file_path] State file path: /root/.local/state/backintime-qt.json

After adding 'Adwaita' to list of themes to lookup:

backintime-qt_polkit --debug
DEBUG: [common/backintime.py:668 argParse] Argument(s) used: {'debug': True, 'quiet': False}
DEBUG: [common/backintime.py:565 startApp] backintime: {'name': 'Back In Time', 'version': '1.5.5', 'running-as-root': True}; host-setup: {'OS': {'/etc/os-release': 'Debian GNU/Linux 13 (trixie)', '/etc/debian_version': '13.2\n'}}

Back In Time
Version: 1.5.5

Back In Time comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type `backintime --license' for details.

DEBUG: [common/configfile.py:585 Config.setCurrentProfile] Change current profile: 1=Main profile
DEBUG: [common/tools.py:227 initiate_translation] No language code. Use systems current locale.
DEBUG: [common/tools.py:242 initiate_translation] Language code used: "en"
DEBUG: [common/backintime.py:754 getConfig] config file: "/root/.config/backintime/config"; share path: "/root/.local/share/backintime"; profiles: "1=Main profile"
DEBUG: [common/pluginmanager.py:233 PluginManager.load] Register plugin path /usr/share/backintime/plugins
DEBUG: [common/pluginmanager.py:254 PluginManager.load] Add plugin notifyplugin.py
DEBUG: [common/tools.py:1116 is_Qt_working] Qt probing result: exit code 1
DEBUG: [common/tools.py:1120 is_Qt_working] Qt probing stdout:

DEBUG: [common/tools.py:1121 is_Qt_working] Qt probing errout:
DEBUG: [common/qt_probing.py:96 ] /usr/share/backintime/common/qt_probing.py started... Call args: ['/usr/share/backintime/common/qt_probing.py', '--debug']
DEBUG: [common/qt_probing.py:97 ] Display system: ($XDG_SESSION_TYPE is not set)
DEBUG: [common/qt_probing.py:98 ] XDG_RUNTIME_DIR=($XDG_RUNTIME_DIR is not set)
DEBUG: [common/qt_probing.py:99 ] XAUTHORITY=/run/user/1000/.mutter-Xwaylandauth.7370I3
DEBUG: [common/qt_probing.py:100 ] QT_QPA_PLATFORM=($QT_QPA_PLATFORM is not set)
DEBUG: [common/qt_probing.py:102 ] Current euid: 0
DEBUG: [common/qt_probing.py:134 ] isSystemTrayAvailable for Qt: False
DEBUG: [common/qt_probing.py:139 ] /usr/share/backintime/common/qt_probing.py is terminating normally (exit code: 1)

DEBUG: [plugins/systrayiconplugin.py:68 init] No system tray available to show the BiT system tray icon
DEBUG: [qt/qttools.py:355 createQApplication] QT QPA platform plugin: xcb
DEBUG: [qt/qttools.py:356 createQApplication] QT_QPA_PLATFORMTHEME=
DEBUG: [qt/qttools.py:361 createQApplication] QT_STYLE_OVERRIDE=
DEBUG: [qt/qttools.py:364 createQApplication] QT active style: fusion
DEBUG: [qt/qttools.py:365 createQApplication] QT fallback style: hicolor
DEBUG: [qt/qttools.py:366 createQApplication] QT supported styles: ['Windows', 'Fusion']
DEBUG: [qt/qttools.py:367 createQApplication] themeSearchPaths: ['/usr/share/icons', ':/icons']
DEBUG: [qt/qttools.py:368 createQApplication] fallbackSearchPaths: ['/usr/share/pixmaps']
DEBUG: [qt/qttools.py:373 createQApplication] Is SystemTray available: False
DEBUG: [qt/qttools.py:391 createQApplication] Trying to set App ID for root user
DEBUG: [qt/qttools.py:436 initiate_translator] No language code. Use systems current locale.
DEBUG: [qt/statedata.py:145 file_path] State file path: /root/.local/state/backintime-qt.json
DEBUG: [qt/icon.py:51 ] Probing theme: "ubuntu-mono-dark" (activated as "ubuntu-mono-dark")
DEBUG: [qt/icon.py:51 ] Probing theme: "gnome" (activated as "gnome")
DEBUG: [qt/icon.py:51 ] Probing theme: "breeze" (activated as "breeze")
DEBUG: [qt/icon.py:51 ] Probing theme: "breeze dark" (activated as "breeze dark")
DEBUG: [qt/icon.py:51 ] Probing theme: "hicolor" (activated as "hicolor")
DEBUG: [qt/icon.py:51 ] Probing theme: "adwaita" (activated as "adwaita")
DEBUG: [qt/icon.py:51 ] Probing theme: "adwaita-dark" (activated as "adwaita-dark")
DEBUG: [qt/icon.py:51 ] Probing theme: "yaru" (activated as "yaru")
DEBUG: [qt/icon.py:51 ] Probing theme: "oxygen" (activated as "oxygen")
DEBUG: [qt/icon.py:51 ] Probing theme: "Adwaita" (activated as "Adwaita")
DEBUG: [common/tools.py:1512 keyringSupported] No keyring due to import error.
DEBUG: [common/mount.py:151 Mount.init] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.init] Call command: ['/usr/bin/backintime', 'pw-cache', 'start']
DEBUG: [common/config.py:1514 Config._cron_line] Profile: Main profile | Automatic backup: 0
DEBUG: [common/tools.py:1512 keyringSupported] No keyring due to import error.
DEBUG: [common/mount.py:151 Mount.init] pw-cache is not running
DEBUG: [common/mount.py:162 Mount.init] Call command: ['/usr/bin/backintime', 'pw-cache', 'start']
DEBUG: [qt/statedata.py:174 save] Save state data.
DEBUG: [qt/statedata.py:145 file_path] State file path: /root/.local/state/backintime-qt.json

@buhtz
Copy link
Member Author

buhtz commented Jan 10, 2026

Thank you for checking this out.
I am not sure but asked an LLM, about the why. The hypothesis is that in user mode Qt does somehow map "adwatia" to "Adwaita". But in root mode Qt has less knowledge about the current icon themes and is not able to corrct that miss spelling.

I wonder if I might use all dir names in /usr/share/icons/* for that list.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR: Merge after creative-break Merge after creative-break (min. 1 week) PR: Waiting for review PR won't be merged until review and approval from a member of the maintenance team. Qt Qt bugs, code or features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Menu and other icons missing (as root & user) - Debian 13 with Gnome DE

2 participants